package br.com.comanda.util;

import java.util.List;

/**
 * Classe utilitaria para manipulações e verificações em arrays.
 * 
 * @author thiago
 * @since 09/01/2013
 */
public final class ArrayUtils {

	private ArrayUtils() {
		super();
	}

	/**
	 * Verifica se o array está vazio
	 */
	public static <T> boolean isEmpty(T[] array) {
		return !(array != null && array.length > 0);
	}

	/**
	 * Cria um array de strings a partir de uma lista
	 */
	public static <T> String[] toStringArray(List<T> list) {
		String[] array = new String[list.size()];

		for (int i = 0; i < list.size(); i++) {
			array[i] = list.get(i).toString();
		}

		return array;
	}

	/**
	 * Realiza uma copia de um intervalo de um array de Strings.
	 */
	public static <T> String[] copyOfRange(String[] original, int start, int end) {
		String[] copy = new String[end - start];

		for (int i = start, j = 0; i < end; i++, j++) {
			copy[j] = original[i];
		}

		return copy;
	}

	/**
	 * Verifica se já existe um elemento em um array
	 */
	public static <T> boolean existsInArray(T[] array, T... element) {
		boolean ret = false;
		for (T t : array) {
			if (t != null) {
				for (T e : element) {
					if (t.equals(e)) {
						ret = true;
						break;
					}
				}
			}
		}
		return ret;
	}
}
